package dome;


/*
在继承关系上，当我们在构造子类的时候，一定要先帮助父类进行构造--怎么帮助？？ -- 调用构造方法！！！

super在子类构造方法内调用父类构造方法的时候一定要放在第一行

在继承关系上子类不带参数的构造方法，编译器会默认提供一个super()


 */

 class Animal {
    public String name;
    public int age;

    public Animal() {
        //不带参数的构造方法
    }
    public Animal(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public void eat() {
        System.out.println(name+"吃饭！");
    }
}

class Dog extends Animal {

//    public Dog() {
//        super();
//
//    }
    public Dog() {
        super("七月",10);                  //显示的调用父类的构造方法，帮助父类进行初始化
                                  // 在继承关系上子类不带参数的构造方法，编译器会默认提供一个super()
    }
    public Dog(String name,int age) {
        super(name,age);                        //super在子类构造方法内调用父类构造方法的时候一定要放在第一行
    }


    public void wangwang() {
        System.out.println(name+"汪汪叫"+"今年"+age+"岁了！");
    }
}


class Cat extends Animal {

    public Cat() {
        super("九月",12);
    }


    public Cat(String name,int age) {
        super(name,age);
    }

    public int size;
    public Cat(String name,int age,int size) {
        super(name,age);
        this.size = size;
    }

    public void miaomiao() {
        System.out.println(name+"喵喵叫");
    }
}




public class Test {

    public static void main(String[] args) {

        Dog dog = new Dog();
        dog.eat();
        dog.wangwang();
        System.out.println("=========");
        Dog dog1 = new Dog("坦克",10);
        dog1.wangwang();

    }
}
